home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / etc / bash_completion.d / modules < prev    next >
Text File  |  2009-04-02  |  2KB  |  85 lines

  1. # -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
  2. # ex: ts=8 sw=8 noet filetype=sh
  3. #
  4. # module completion by Ted Stern <stern@cray.com>
  5. #
  6. # Completion for Environment Modules `module' alias.
  7. #
  8. # See http://sourceforge.net/projects/modules/
  9. #     http://modules.sourceforge.net/
  10. #
  11. # There are several versions of modules that are commonly used.  Older
  12. # Cray UNICOS systems and many other sites use 2.2.2b.  The latest GPL'd
  13. # version is 3.1.6.  But the module alias is somewhat self-documenting
  14. # via the `module help' command, so use that to print the options.
  15. #
  16. # Programmable completion might be more difficult under tcsh since the
  17. # module command is an alias, and the `module avail' command returns
  18. # its output as stderr.
  19.  
  20. type module &>/dev/null && {
  21.  
  22. _module_list ()
  23. {
  24.    local modules="$( echo $LOADEDMODULES | sed 's/:/ /g' | sort )"
  25.    compgen -W "$modules" -- $1
  26. }
  27.  
  28. _module_path ()
  29. {
  30.    local modules="$( echo $MODULEPATH | sed 's/:/ /g' | sort )"
  31.    compgen -W "$modules" -- $1
  32. }
  33.  
  34. _module_avail ()
  35. {
  36.    local modules="$( \
  37.       module avail 2>&1 | \
  38.       egrep -v '^(-|$)' | \
  39.       xargs printf '%s\n' | sort )"
  40.  
  41.    compgen -W "$modules" -- $1
  42. }
  43.  
  44. # A completion function for the module alias
  45. _module () {
  46.    local cur prev options
  47.  
  48.    COMPREPLY=()
  49.    cur=`_get_cword`
  50.    prev=${COMP_WORDS[COMP_CWORD-1]}
  51.  
  52.    if [ $COMP_CWORD -eq 1 ] ; then
  53.       # First parameter on line -- we expect it to be a mode selection
  54.  
  55.       options="$( module help 2>&1 | egrep '^[[:space:]]*\+' | \
  56.           awk '{print $2}' | sed -e 's/|/ /g' | sort )"
  57.  
  58.       COMPREPLY=( $(compgen -W "$options" -- $cur) )
  59.  
  60.    elif [ $COMP_CWORD -eq 2 ] ; then
  61.  
  62.       case "$prev" in
  63.       @(add|display|help|load|show|whatis))
  64.           COMPREPLY=( $(_module_avail $cur) )
  65.           ;;
  66.  
  67.       @(rm|switch|swap|unload|update))
  68.           COMPREPLY=( $(_module_list $cur) )
  69.           ;;
  70.       unuse)
  71.           COMPREPLY=( $(_module_path $cur) )
  72.          ;;
  73.       esac
  74.    elif [ $COMP_CWORD -eq 3 ] ; then
  75.       case ${COMP_WORDS[1]} in
  76.          @(sw?(ap|itch)))
  77.             COMPREPLY=( $(_module_avail $cur) )
  78.             ;;
  79.       esac
  80.    fi
  81.    return 0
  82. }
  83. complete -o default -F _module module
  84. }
  85.